#include <string.h>
#include "stm32f10x.h"

#include "uart.h"

int main(void)
{
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 设置中断优先级分组
    uart1_init(9600);   // 串口1初始化，波特率为9600
    
	while(1)
	{
        // 接收完成, 开启 DMA1 通道4, UART1_TX, 使能DMA发送
        // 注意本实例发送的内容是接收到的内容，相当于完成了串口的回环测试
		if(uart1_recv_flag == 1)
        {
            uart1_recv_flag = 0;
            
            DMA_Cmd(DMA1_Channel4, DISABLE);    // 关闭 DMA1 通道4, UART1_TX
            DMA_SetCurrDataCounter(DMA1_Channel4, uart1_recv_len);  // 传输数量寄存器只能在通道不工作(DMA_CCRx的EN=0)时写入
            DMA_Cmd(DMA1_Channel4, ENABLE);    // 开启 DMA1 通道4, UART1_TX
        }
        
        
        // 发送完成, 开启 DMA1 通道5, UART1_RX, 使能 DMA + IDLE 接收
        if(uart1_send_flag == 1)
        {
            uart1_send_flag = 0;
            memset(uart1_recv_data, '\0', sizeof(uart1_recv_data)/sizeof(uart1_recv_data[0]));  // 清空接收缓冲区
            
            DMA_Cmd(DMA1_Channel5, DISABLE);    // DMA1 通道5, UART1_RX
            DMA_SetCurrDataCounter(DMA1_Channel5, sizeof(uart1_recv_data)/sizeof(uart1_recv_data[0])); 
            DMA_Cmd(DMA1_Channel5, ENABLE);     // DMA1 通道5, UART1_RX
        }
	}
}

